package com.study.example.ex01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.TreeSet;

import org.junit.Test;

/**
* @Name: FileStringSort2FileString
* @Description: 把一个文件中的字符串排序后再写入另一个文件
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-16 下午2:59:27 
* @Version: V1.0
 */
public class FileStringSort2FileString {
	
	/**
	* @Name: fileStringSort2FileString
	* @Description: 把一个文件中的字符串排序后再写入另一个文件（对多个字符串进行排序）
	* 分析：
	* 	1、获取源文件File对象；
	* 	2、获取目标文件File对象；
	* 	3、创建集合对象，设置排序规则
	* 		TreeSet<String>
	* 	4、将源文件中的字符串内容读取到集合中；
	* 	5、将集合中的内容保存到目标文件；
	* 	6、释放资源；
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-16 下午3:01:07
	* @Parameters: @param oFilePath
	* @Parameters: @param tFilePath
	* @Return: void 无
	 */
	public void fileStringSort2FileString(String oFilePath, String tFilePath) throws IOException {
		//创建集合对象，设置排序规则
		TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {
			@Override
			//排序规则：按字符串升序排列
			public int compare(String s1, String s2) {
				int num = s1.compareTo(s2) ;
				return num;
			}
		}) ;
		//获取源文件File对象
		File oFile = new File(oFilePath) ;
		//获取目标文件File对象
		File tFile = new File(tFilePath) ;
		//将源文件中的字符串内容读取到集合中
		BufferedReader reader = new BufferedReader(new FileReader(oFile)) ;
		String line = null ;
		while((line = reader.readLine()) != null) {
			ts.add(line) ;
		}
		//将集合中的内容保存到目标文件
		BufferedWriter writer = new BufferedWriter(new FileWriter(tFile)) ;
		for(String str : ts) {
			writer.write(str) ;
			writer.newLine() ;
			writer.flush() ;
		}
		//释放资源
		reader.close() ;
		writer.close() ;
	}
	
	/**
	* @Name: fileStringSort2FileString02
	* @Description: 把一个文件中的字符串排序后再写入另一个文件（对一个字符串进行字符排序）
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-16 下午3:14:37
	* @Parameters: @param oFilePath
	* @Parameters: @param tFilePath
	* @Parameters: @throws IOException
	* @Return: void
	 */
	public void fileStringSort2FileString02(String oFilePath, String tFilePath) throws IOException {
		BufferedReader reader = new BufferedReader(new FileReader("fos.txt")) ;
		//读取源文件中的字符串
		String oStr = reader.readLine() ;
		//将字符串转为字符数组
		char[] charArray = oStr.toCharArray() ;
		//对字符数组进行排序
		Arrays.sort(charArray) ;
		String tStr = new String(charArray) ;
		//将排序后的字符串写入目标文件
		BufferedWriter writer = new BufferedWriter(new FileWriter("copy.txt")) ;
		writer.write(tStr) ;
		writer.flush() ;
		writer.close() ;
		reader.close() ;
	}
	
	@Test
	public void test() {
		String oFilePath = "fos.txt" ;
		String tFilePath = "sort.txt" ;
		try {
			fileStringSort2FileString02(oFilePath, tFilePath) ;
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}














